/**
 * @description: 队列数据结构：入栈、出栈、检查栈顶、判空
 * 后进先出
 */

class Stack {
  constructor(){
    this.items = []
  }
  // 添加至栈顶
  push(item){
    this.items.unshift(item)
  }
  // 出栈
  pop(){
    return this.items.shift()
  }
  // 查看栈顶元素
  peek() {
    return this.items[0];
  }
  // 判断栈是否是空
  isEmpty(){
    return this.items.length === 0
  }
}

/* 调用 */
const stack = new Stack()
stack.push('apples');
stack.push('oranges');
stack.push('pears');

stack.isEmpty();    // false

stack.peek();       // 'pears'

stack.pop();        // 'pears'
stack.pop();        // 'oranges'
stack.pop();        // 'apples'

stack.isEmpty();    // true